<!-- 点位 》 防区 -->

<template>
  <CommonBody
    hasTree
    :tree="area_tree"
    :field="area_TREE_FIELD"
    :filterTip="`${CORE.MAP.ALARM}主机`"
    hasReset
    @change="toChange"
  >
    <template #treeBottom>
      <BtnPrimary title="同步防区" @click="startSubmit" />
    </template>

    <template #search>
      <MySearch />
    </template>

    <template #table>
      <MyTable />
    </template>

    <MyModal />
  </CommonBody>
</template>

<script>
// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import store from './store'

// ============================== 导出组件 ============================== //

export default {
  /**
   * 名称定义 (实际使用名称)
   */
  name: 'PointDefence',

  /**
   * 混入列表 (配置选项合并)
   */
  mixins: [CORE.mixStore(store)],

  /**
   * 组件导入 (Abc.vue + Abc/index.vue)
   */
  ...CORE.components(require.context('../PointAccess', true, /vue$/), require.context('./', true, /vue$/)),

  /**
   * 监听属性 (深度 deep 首次 immediate)
   */
  watch: {
    /**
     * 监听车库同步
     */
    readySubmit(ready) {
      ready && this.area_startTree()
    },
  },

  /**
   * 本地方法 (轻量重要在前)
   */
  methods: {
    /**
     * 切换结构树
     */
    toChange(data) {
      const isMajor = this.area_tree.some((item) => data.code === item.code)
      const code = isMajor ? data.code : ''
      const subCode = isMajor ? '' : data.code

      // 设置编号并回到首页
      Object.assign(this.param, { page: 1, code, subCode })

      // 打开列表开关
      this.startList()
    },
  },
}
</script>
